{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:01.397551Z",
     "end_time": "2024-06-11T20:56:02.242705Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": "    ID  Suc_flag  ARPU  PromCnt12  PromCnt36  PromCntMsg12  PromCntMsg36  \\\n0   12         1  50.0          6         10             2             3   \n1   53         0   NaN          5          9             1             4   \n2   67         1  25.0          6         11             2             4   \n3   71         1  80.0          7         10             2             4   \n4  142         1  15.0          6         11             2             4   \n\n   Class   Age Gender HomeOwner    AvgARPU  AvgHomeValue  AvgIncome  \n0      4  57.0      M         H  49.894904         33400      39460  \n1      3  55.0      M         H  48.574742         37600      33545  \n2      1  57.0      F         H  49.272646        100400      42091  \n3      1  52.0      F         H  47.334953         39900      39313  \n4      1   NaN      F         U  47.827404         47500          0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ID</th>\n      <th>Suc_flag</th>\n      <th>ARPU</th>\n      <th>PromCnt12</th>\n      <th>PromCnt36</th>\n      <th>PromCntMsg12</th>\n      <th>PromCntMsg36</th>\n      <th>Class</th>\n      <th>Age</th>\n      <th>Gender</th>\n      <th>HomeOwner</th>\n      <th>AvgARPU</th>\n      <th>AvgHomeValue</th>\n      <th>AvgIncome</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>12</td>\n      <td>1</td>\n      <td>50.0</td>\n      <td>6</td>\n      <td>10</td>\n      <td>2</td>\n      <td>3</td>\n      <td>4</td>\n      <td>57.0</td>\n      <td>M</td>\n      <td>H</td>\n      <td>49.894904</td>\n      <td>33400</td>\n      <td>39460</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>53</td>\n      <td>0</td>\n      <td>NaN</td>\n      <td>5</td>\n      <td>9</td>\n      <td>1</td>\n      <td>4</td>\n      <td>3</td>\n      <td>55.0</td>\n      <td>M</td>\n      <td>H</td>\n      <td>48.574742</td>\n      <td>37600</td>\n      <td>33545</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>67</td>\n      <td>1</td>\n      <td>25.0</td>\n      <td>6</td>\n      <td>11</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>57.0</td>\n      <td>F</td>\n      <td>H</td>\n      <td>49.272646</td>\n      <td>100400</td>\n      <td>42091</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>71</td>\n      <td>1</td>\n      <td>80.0</td>\n      <td>7</td>\n      <td>10</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>52.0</td>\n      <td>F</td>\n      <td>H</td>\n      <td>47.334953</td>\n      <td>39900</td>\n      <td>39313</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>142</td>\n      <td>1</td>\n      <td>15.0</td>\n      <td>6</td>\n      <td>11</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>NaN</td>\n      <td>F</td>\n      <td>U</td>\n      <td>47.827404</td>\n      <td>47500</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "camp = pd.read_csv(r'../data/teleco_camp_orig.csv')\n",
    "camp.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "data": {
      "text/plain": "(array([2.358e+03, 9.000e+00, 3.040e+02, 1.397e+03, 2.187e+03, 1.303e+03,\n        9.210e+02, 5.500e+02, 2.900e+02, 1.300e+02, 1.100e+02, 3.900e+01,\n        3.400e+01, 1.800e+01, 7.000e+00, 1.300e+01, 7.000e+00, 7.000e+00,\n        0.000e+00, 2.000e+00]),\n array([     0.  ,  10000.05,  20000.1 ,  30000.15,  40000.2 ,  50000.25,\n         60000.3 ,  70000.35,  80000.4 ,  90000.45, 100000.5 , 110000.55,\n        120000.6 , 130000.65, 140000.7 , 150000.75, 160000.8 , 170000.85,\n        180000.9 , 190000.95, 200001.  ]),\n <BarContainer object of 20 artists>)"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(camp['AvgIncome'], bins=20)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.245805Z",
     "end_time": "2024-06-11T20:56:02.404102Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "count      9686.000000\nmean      40491.444249\nstd       28707.494146\nmin           0.000000\n25%       24464.000000\n50%       43100.000000\n75%       56876.000000\nmax      200001.000000\nName: AvgIncome, dtype: float64"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['AvgIncome'].describe(include='all')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.401113Z",
     "end_time": "2024-06-11T20:56:02.416310Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "data": {
      "text/plain": "(array([ 410., 2837., 2561., 1244.,  675.,  445.,  323.,  294.,  183.,\n         129.,  109.,  122.,   67.,   56.,   42.,   36.,   30.,   26.,\n          31.,   66.]),\n array([     0.,  30000.,  60000.,  90000., 120000., 150000., 180000.,\n        210000., 240000., 270000., 300000., 330000., 360000., 390000.,\n        420000., 450000., 480000., 510000., 540000., 570000., 600000.]),\n <BarContainer object of 20 artists>)"
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(camp['AvgHomeValue'], bins=20)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.416310Z",
     "end_time": "2024-06-11T20:56:02.555503Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "data": {
      "text/plain": "count      9686.000000\nmean     110986.299814\nstd       98670.855450\nmin           0.000000\n25%       52300.000000\n50%       76900.000000\n75%      128175.000000\nmax      600000.000000\nName: AvgHomeValue, dtype: float64"
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['AvgHomeValue'].describe(include=True)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.558492Z",
     "end_time": "2024-06-11T20:56:02.586820Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "(array([1.000e+00, 2.900e+01, 4.560e+02, 1.750e+03, 2.016e+03, 1.175e+03,\n        8.460e+02, 4.580e+02, 2.580e+02, 1.150e+02, 1.090e+02, 3.100e+01,\n        3.300e+01, 1.800e+01, 5.000e+00, 1.300e+01, 7.000e+00, 7.000e+00,\n        0.000e+00, 2.000e+00]),\n array([  2499. ,  12374.1,  22249.2,  32124.3,  41999.4,  51874.5,\n         61749.6,  71624.7,  81499.8,  91374.9, 101250. , 111125.1,\n        121000.2, 130875.3, 140750.4, 150625.5, 160500.6, 170375.7,\n        180250.8, 190125.9, 200001. ]),\n <BarContainer object of 20 artists>)"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAAGdCAYAAAAFcOm4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAwsElEQVR4nO3df1SVZb7//9cW3Vsx90ZU2DAhok2aiqZWxKc0GzkgMVYn55Q/SptMy8GapIxoHFM7Kzg6x2oax6Z1MuesrKy1ys7RxhNqSiVpUoQ/iqWORh3Z2Kiw1RJBru8f8+U+7sAUg4ELn4+17rX2vq7rvu/3tW9lv9a973tvlzHGCAAAwGIdWrsAAACAH4tAAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwXsfWLqCl1NXV6eDBg+rWrZtcLldrlwMAAM6DMUbHjh1TbGysOnQ4//Mu7TbQHDx4UHFxca1dBgAAuABfffWVLr300vMe324DTbdu3ST9/QXxer2tXA0AADgfwWBQcXFxzvv4+Wq3gab+Yyav10ugAQDAMk29XISLggEAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYr0mBJjc3V1dffbW6deumqKgo3XrrrSotLQ0Zc/LkSWVmZqpHjx665JJLNH78eFVUVISMKSsrU0ZGhsLDwxUVFaU5c+aotrY2ZMymTZs0fPhweTweXXbZZVqxYsWFzRAAALR7HZsyePPmzcrMzNTVV1+t2tpaPf7440pNTdXu3bvVtWtXSdLs2bO1du1avfHGG/L5fJo1a5Zuu+02ffjhh5Kk06dPKyMjQ36/X1u2bFF5ebmmTJmiTp066amnnpIk7d+/XxkZGbr//vu1cuVKbdiwQffee69iYmKUlpbWzC8B2rI+j61tke0eyMtoke0CAFqHyxhjLnTlb775RlFRUdq8ebNGjRqlqqoq9erVS6+88op+8YtfSJK++OILXXHFFSosLNS1116rv/zlL/r5z3+ugwcPKjo6WpL0/PPPKzs7W998843cbreys7O1du1a7dy509nXhAkTVFlZqXXr1p1XbcFgUD6fT1VVVfJ6vRc6RbQyAg0AXFwu9P37R11DU1VVJUmKjIyUJBUVFammpkYpKSnOmAEDBqh3794qLCyUJBUWFioxMdEJM5KUlpamYDCoXbt2OWPO3Eb9mPptNKa6ulrBYDBkAQAAF4cLDjR1dXV66KGHdN1112nw4MGSpEAgILfbrYiIiJCx0dHRCgQCzpgzw0x9f33fD40JBoP67rvvGq0nNzdXPp/PWeLi4i50agAAwDIXHGgyMzO1c+dOvfbaa81ZzwXLyclRVVWVs3z11VetXRIAAPgHadJFwfVmzZqlNWvWqKCgQJdeeqnT7vf7derUKVVWVoacpamoqJDf73fGbNu2LWR79XdBnTnm+3dGVVRUyOv1qkuXLo3W5PF45PF4LmQ6AADAck06Q2OM0axZs/TWW29p48aNSkhICOkfMWKEOnXqpA0bNjhtpaWlKisrU3JysiQpOTlZO3bs0KFDh5wx+fn58nq9GjhwoDPmzG3Uj6nfBgAAwJmadIYmMzNTr7zyit5++21169bNuebF5/OpS5cu8vl8mjZtmrKyshQZGSmv16sHHnhAycnJuvbaayVJqampGjhwoO666y4tWrRIgUBAc+fOVWZmpnOG5f7779cf/vAHPfroo7rnnnu0ceNGvf7661q7tmXueAEAAHZr0hmaZcuWqaqqSqNHj1ZMTIyzrFq1yhnz9NNP6+c//7nGjx+vUaNGye/3680333T6w8LCtGbNGoWFhSk5OVl33nmnpkyZooULFzpjEhIStHbtWuXn52vo0KH693//d/3Hf/wH30EDAAAa9aO+h6Yt43to2ge+hwYALi6t8j00AAAAbQGBBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwXpMDTUFBgcaNG6fY2Fi5XC6tXr06pN/lcjW6LF682BnTp0+fBv15eXkh2ykpKdHIkSPVuXNnxcXFadGiRRc2QwAA0O41OdCcOHFCQ4cO1dKlSxvtLy8vD1mWL18ul8ul8ePHh4xbuHBhyLgHHnjA6QsGg0pNTVV8fLyKioq0ePFizZ8/Xy+88EJTywUAABeBjk1dIT09Xenp6Wft9/v9Ic/ffvtt3Xjjjerbt29Ie7du3RqMrbdy5UqdOnVKy5cvl9vt1qBBg1RcXKwlS5ZoxowZTS0ZAAC0cy16DU1FRYXWrl2radOmNejLy8tTjx49NGzYMC1evFi1tbVOX2FhoUaNGiW32+20paWlqbS0VEePHm10X9XV1QoGgyELAAC4ODT5DE1T/PnPf1a3bt102223hbQ/+OCDGj58uCIjI7Vlyxbl5OSovLxcS5YskSQFAgElJCSErBMdHe30de/evcG+cnNztWDBghaaCX5In8fWtnYJAICLXIsGmuXLl2vy5Mnq3LlzSHtWVpbzeMiQIXK73brvvvuUm5srj8dzQfvKyckJ2W4wGFRcXNyFFQ4AAKzSYoHm/fffV2lpqVatWnXOsUlJSaqtrdWBAwfUv39/+f1+VVRUhIypf3626248Hs8FhyEAAGC3FruG5sUXX9SIESM0dOjQc44tLi5Whw4dFBUVJUlKTk5WQUGBampqnDH5+fnq379/ox83AQCAi1uTA83x48dVXFys4uJiSdL+/ftVXFyssrIyZ0wwGNQbb7yhe++9t8H6hYWFeuaZZ/TZZ5/pr3/9q1auXKnZs2frzjvvdMLKpEmT5Ha7NW3aNO3atUurVq3Ss88+G/KREgAAQL0mf+S0fft23Xjjjc7z+pAxdepUrVixQpL02muvyRijiRMnNljf4/Hotdde0/z581VdXa2EhATNnj07JKz4fD69++67yszM1IgRI9SzZ0/NmzePW7YBAECjXMYY09pFtIRgMCifz6eqqip5vd7WLqdds/EupwN5Ga1dAgCgERf6/s1vOQEAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1mtyoCkoKNC4ceMUGxsrl8ul1atXh/TffffdcrlcIcvYsWNDxhw5ckSTJ0+W1+tVRESEpk2bpuPHj4eMKSkp0ciRI9W5c2fFxcVp0aJFTZ8dAAC4KDQ50Jw4cUJDhw7V0qVLzzpm7NixKi8vd5ZXX301pH/y5MnatWuX8vPztWbNGhUUFGjGjBlOfzAYVGpqquLj41VUVKTFixdr/vz5euGFF5paLgAAuAh0bOoK6enpSk9P/8ExHo9Hfr+/0b7PP/9c69at08cff6yrrrpKkvTcc8/ppptu0u9+9zvFxsZq5cqVOnXqlJYvXy63261BgwapuLhYS5YsCQk+AAAAUgtdQ7Np0yZFRUWpf//+mjlzpg4fPuz0FRYWKiIiwgkzkpSSkqIOHTpo69atzphRo0bJ7XY7Y9LS0lRaWqqjR482us/q6moFg8GQBQAAXByaPdCMHTtW//mf/6kNGzbo3/7t37R582alp6fr9OnTkqRAIKCoqKiQdTp27KjIyEgFAgFnTHR0dMiY+uf1Y74vNzdXPp/PWeLi4pp7agAAoI1q8kdO5zJhwgTncWJiooYMGaJ+/fpp06ZNGjNmTHPvzpGTk6OsrCzneTAYJNQAAHCRaPHbtvv27auePXtq7969kiS/369Dhw6FjKmtrdWRI0ec6278fr8qKipCxtQ/P9u1OR6PR16vN2QBAAAXhxYPNF9//bUOHz6smJgYSVJycrIqKytVVFTkjNm4caPq6uqUlJTkjCkoKFBNTY0zJj8/X/3791f37t1bumQAAGCZJgea48ePq7i4WMXFxZKk/fv3q7i4WGVlZTp+/LjmzJmjjz76SAcOHNCGDRt0yy236LLLLlNaWpok6YorrtDYsWM1ffp0bdu2TR9++KFmzZqlCRMmKDY2VpI0adIkud1uTZs2Tbt27dKqVav07LPPhnykBAAAUK/JgWb79u0aNmyYhg0bJknKysrSsGHDNG/ePIWFhamkpEQ333yzLr/8ck2bNk0jRozQ+++/L4/H42xj5cqVGjBggMaMGaObbrpJ119/fch3zPh8Pr377rvav3+/RowYoYcffljz5s3jlm0AANAolzHGtHYRLSEYDMrn86mqqorraVpYn8fWtnYJTXYgL6O1SwAANOJC37/5LScAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYL0mB5qCggKNGzdOsbGxcrlcWr16tdNXU1Oj7OxsJSYmqmvXroqNjdWUKVN08ODBkG306dNHLpcrZMnLywsZU1JSopEjR6pz586Ki4vTokWLLmyGAACg3WtyoDlx4oSGDh2qpUuXNuj79ttv9cknn+i3v/2tPvnkE7355psqLS3VzTff3GDswoULVV5e7iwPPPCA0xcMBpWamqr4+HgVFRVp8eLFmj9/vl544YWmlgsAAC4CHZu6Qnp6utLT0xvt8/l8ys/PD2n7wx/+oGuuuUZlZWXq3bu3096tWzf5/f5Gt7Ny5UqdOnVKy5cvl9vt1qBBg1RcXKwlS5ZoxowZTS0ZAAC0cy1+DU1VVZVcLpciIiJC2vPy8tSjRw8NGzZMixcvVm1trdNXWFioUaNGye12O21paWkqLS3V0aNHG91PdXW1gsFgyAIAAC4OTT5D0xQnT55Udna2Jk6cKK/X67Q/+OCDGj58uCIjI7Vlyxbl5OSovLxcS5YskSQFAgElJCSEbCs6Otrp6969e4N95ebmasGCBS04GwAA0Fa1WKCpqanR7bffLmOMli1bFtKXlZXlPB4yZIjcbrfuu+8+5ebmyuPxXND+cnJyQrYbDAYVFxd3YcUDAACrtEigqQ8zX375pTZu3BhydqYxSUlJqq2t1YEDB9S/f3/5/X5VVFSEjKl/frbrbjwezwWHIQAAYLdmv4amPszs2bNH69evV48ePc65TnFxsTp06KCoqChJUnJysgoKClRTU+OMyc/PV//+/Rv9uAkAAFzcmnyG5vjx49q7d6/zfP/+/SouLlZkZKRiYmL0i1/8Qp988onWrFmj06dPKxAISJIiIyPldrtVWFiorVu36sYbb1S3bt1UWFio2bNn684773TCyqRJk7RgwQJNmzZN2dnZ2rlzp5599lk9/fTTzTRtAADQnriMMaYpK2zatEk33nhjg/apU6dq/vz5DS7mrffee+9p9OjR+uSTT/SrX/1KX3zxhaqrq5WQkKC77rpLWVlZIR8ZlZSUKDMzUx9//LF69uypBx54QNnZ2eddZzAYlM/nU1VV1Tk/8sKP0+exta1dQpMdyMto7RIAAI240PfvJgcaWxBo/nEINACA5nKh79/8lhMAALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPVa9McpgbaqJW8155ZwAPjH4wwNAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwXpMDTUFBgcaNG6fY2Fi5XC6tXr06pN8Yo3nz5ikmJkZdunRRSkqK9uzZEzLmyJEjmjx5srxeryIiIjRt2jQdP348ZExJSYlGjhypzp07Ky4uTosWLWr67AAAwEWhyYHmxIkTGjp0qJYuXdpo/6JFi/T73/9ezz//vLZu3aquXbsqLS1NJ0+edMZMnjxZu3btUn5+vtasWaOCggLNmDHD6Q8Gg0pNTVV8fLyKioq0ePFizZ8/Xy+88MIFTBEAALR3LmOMueCVXS699dZbuvXWWyX9/exMbGysHn74YT3yyCOSpKqqKkVHR2vFihWaMGGCPv/8cw0cOFAff/yxrrrqKknSunXrdNNNN+nrr79WbGysli1bpt/85jcKBAJyu92SpMcee0yrV6/WF198cV61BYNB+Xw+VVVVyev1XugUcR76PLa2tUtoUw7kZbR2CQBgrQt9/27Wa2j279+vQCCglJQUp83n8ykpKUmFhYWSpMLCQkVERDhhRpJSUlLUoUMHbd261RkzatQoJ8xIUlpamkpLS3X06NHmLBkAALQDHZtzY4FAQJIUHR0d0h4dHe30BQIBRUVFhRbRsaMiIyNDxiQkJDTYRn1f9+7dG+y7urpa1dXVzvNgMPgjZwMAAGzRbu5yys3Nlc/nc5a4uLjWLgkAAPyDNGug8fv9kqSKioqQ9oqKCqfP7/fr0KFDIf21tbU6cuRIyJjGtnHmPr4vJydHVVVVzvLVV1/9+AkBAAArNGugSUhIkN/v14YNG5y2YDCorVu3Kjk5WZKUnJysyspKFRUVOWM2btyouro6JSUlOWMKCgpUU1PjjMnPz1f//v0b/bhJkjwej7xeb8gCAAAuDk0ONMePH1dxcbGKi4sl/f1C4OLiYpWVlcnlcumhhx7Sv/7rv+q//uu/tGPHDk2ZMkWxsbHOnVBXXHGFxo4dq+nTp2vbtm368MMPNWvWLE2YMEGxsbGSpEmTJsntdmvatGnatWuXVq1apWeffVZZWVnNNnEAANB+NPmi4O3bt+vGG290nteHjKlTp2rFihV69NFHdeLECc2YMUOVlZW6/vrrtW7dOnXu3NlZZ+XKlZo1a5bGjBmjDh06aPz48fr973/v9Pt8Pr377rvKzMzUiBEj1LNnT82bNy/ku2oAAADq/ajvoWnL+B6afxy+hyYU30MDABeuTXwPDQAAQGsg0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGC9jq1dANDe9HlsbYts90BeRotsFwDaA87QAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6zR5o+vTpI5fL1WDJzMyUJI0ePbpB3/333x+yjbKyMmVkZCg8PFxRUVGaM2eOamtrm7tUAADQTjT7j1N+/PHHOn36tPN8586d+qd/+if9y7/8i9M2ffp0LVy40HkeHh7uPD59+rQyMjLk9/u1ZcsWlZeXa8qUKerUqZOeeuqp5i4XAAC0A80eaHr16hXyPC8vT/369dMNN9zgtIWHh8vv9ze6/rvvvqvdu3dr/fr1io6O1pVXXqknn3xS2dnZmj9/vtxud3OXDAAALNei19CcOnVKL7/8su655x65XC6nfeXKlerZs6cGDx6snJwcffvtt05fYWGhEhMTFR0d7bSlpaUpGAxq165dZ91XdXW1gsFgyAIAAC4OzX6G5kyrV69WZWWl7r77bqdt0qRJio+PV2xsrEpKSpSdna3S0lK9+eabkqRAIBASZiQ5zwOBwFn3lZubqwULFjT/JAAAQJvXooHmxRdfVHp6umJjY522GTNmOI8TExMVExOjMWPGaN++ferXr98F7ysnJ0dZWVnO82AwqLi4uAveHgAAsEeLBZovv/xS69evd868nE1SUpIkae/everXr5/8fr+2bdsWMqaiokKSznrdjSR5PB55PJ4fWTUAALBRi11D89JLLykqKkoZGRk/OK64uFiSFBMTI0lKTk7Wjh07dOjQIWdMfn6+vF6vBg4c2FLlAgAAi7XIGZq6ujq99NJLmjp1qjp2/L9d7Nu3T6+88opuuukm9ejRQyUlJZo9e7ZGjRqlIUOGSJJSU1M1cOBA3XXXXVq0aJECgYDmzp2rzMxMzsAAAIBGtUigWb9+vcrKynTPPfeEtLvdbq1fv17PPPOMTpw4obi4OI0fP15z5851xoSFhWnNmjWaOXOmkpOT1bVrV02dOjXke2sAAADO1CKBJjU1VcaYBu1xcXHavHnzOdePj4/XO++80xKlAQCAdojfcgIAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1mv2QDN//ny5XK6QZcCAAU7/yZMnlZmZqR49euiSSy7R+PHjVVFREbKNsrIyZWRkKDw8XFFRUZozZ45qa2ubu1QAANBOdGyJjQ4aNEjr16//v510/L/dzJ49W2vXrtUbb7whn8+nWbNm6bbbbtOHH34oSTp9+rQyMjLk9/u1ZcsWlZeXa8qUKerUqZOeeuqpligXAABYrkUCTceOHeX3+xu0V1VV6cUXX9Qrr7yin/3sZ5Kkl156SVdccYU++ugjXXvttXr33Xe1e/durV+/XtHR0bryyiv15JNPKjs7W/Pnz5fb7W6JkgEAgMVa5BqaPXv2KDY2Vn379tXkyZNVVlYmSSoqKlJNTY1SUlKcsQMGDFDv3r1VWFgoSSosLFRiYqKio6OdMWlpaQoGg9q1a9dZ91ldXa1gMBiyAACAi0OzB5qkpCStWLFC69at07Jly7R//36NHDlSx44dUyAQkNvtVkRERMg60dHRCgQCkqRAIBASZur76/vOJjc3Vz6fz1ni4uKad2IAAKDNavaPnNLT053HQ4YMUVJSkuLj4/X666+rS5cuzb07R05OjrKyspznwWCQUAMAwEWixW/bjoiI0OWXX669e/fK7/fr1KlTqqysDBlTUVHhXHPj9/sb3PVU/7yx63LqeTweeb3ekAUAAFwcWjzQHD9+XPv27VNMTIxGjBihTp06acOGDU5/aWmpysrKlJycLElKTk7Wjh07dOjQIWdMfn6+vF6vBg4c2NLlAgAACzX7R06PPPKIxo0bp/j4eB08eFBPPPGEwsLCNHHiRPl8Pk2bNk1ZWVmKjIyU1+vVAw88oOTkZF177bWSpNTUVA0cOFB33XWXFi1apEAgoLlz5yozM1Mej6e5ywUAAO1Aswear7/+WhMnTtThw4fVq1cvXX/99froo4/Uq1cvSdLTTz+tDh06aPz48aqurlZaWpr++Mc/OuuHhYVpzZo1mjlzppKTk9W1a1dNnTpVCxcubO5SAQBAO+EyxpjWLqIlBINB+Xw+VVVVcT1NC+vz2NrWLuGicCAvo7VLAIAWd6Hv3y3yxXoAml9LBkfCEgDbEWguEpxFAQC0Z/zaNgAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Zo90OTm5urqq69Wt27dFBUVpVtvvVWlpaUhY0aPHi2XyxWy3H///SFjysrKlJGRofDwcEVFRWnOnDmqra1t7nIBAEA70LG5N7h582ZlZmbq6quvVm1trR5//HGlpqZq9+7d6tq1qzNu+vTpWrhwofM8PDzceXz69GllZGTI7/dry5YtKi8v15QpU9SpUyc99dRTzV0yAACwXLMHmnXr1oU8X7FihaKiolRUVKRRo0Y57eHh4fL7/Y1u491339Xu3bu1fv16RUdH68orr9STTz6p7OxszZ8/X263u7nLBgAAFmv2QPN9VVVVkqTIyMiQ9pUrV+rll1+W3+/XuHHj9Nvf/tY5S1NYWKjExERFR0c749PS0jRz5kzt2rVLw4YNa+mygYtKn8fWtsh2D+RltMh2AeD7WjTQ1NXV6aGHHtJ1112nwYMHO+2TJk1SfHy8YmNjVVJSouzsbJWWlurNN9+UJAUCgZAwI8l5HggEGt1XdXW1qqurnefBYLC5pwMAANqoFg00mZmZ2rlzpz744IOQ9hkzZjiPExMTFRMTozFjxmjfvn3q16/fBe0rNzdXCxYs+FH1AgAAO7XYbduzZs3SmjVr9N577+nSSy/9wbFJSUmSpL1790qS/H6/KioqQsbUPz/bdTc5OTmqqqpylq+++urHTgEAAFii2QONMUazZs3SW2+9pY0bNyohIeGc6xQXF0uSYmJiJEnJycnasWOHDh065IzJz8+X1+vVwIEDG92Gx+OR1+sNWQAAwMWh2T9yyszM1CuvvKK3335b3bp1c6558fl86tKli/bt26dXXnlFN910k3r06KGSkhLNnj1bo0aN0pAhQyRJqampGjhwoO666y4tWrRIgUBAc+fOVWZmpjweT3OXDAAALNfsZ2iWLVumqqoqjR49WjExMc6yatUqSZLb7db69euVmpqqAQMG6OGHH9b48eP13//93842wsLCtGbNGoWFhSk5OVl33nmnpkyZEvK9NQAAAPWa/QyNMeYH++Pi4rR58+Zzbic+Pl7vvPNOc5UFAADaMX7LCQAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACwHoEGAABYj0ADAACsR6ABAADWI9AAAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFivY2sXAKD96vPY2hbb9oG8jBbbNgD7EGgAWKmlwhJBCbATHzkBAADrEWgAAID1CDQAAMB6BBoAAGA9Ag0AALAegQYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6/tt3GtNQvCAM4Pzb+H+QXwoE2foZm6dKl6tOnjzp37qykpCRt27attUsCAABtUJs9Q7Nq1SplZWXp+eefV1JSkp555hmlpaWptLRUUVFRrV0eALQZLXlWibM/sEWbDTRLlizR9OnT9ctf/lKS9Pzzz2vt2rVavny5HnvssVauDgDwY7VUECOEXZzaZKA5deqUioqKlJOT47R16NBBKSkpKiwsbHSd6upqVVdXO8+rqqokScFgsGWLbWZ11d+2dgkA4Og9+43WLqHJbKx554K01i6hzah/3zbGNGm9Nhlo/va3v+n06dOKjo4OaY+OjtYXX3zR6Dq5ublasGBBg/a4uLgWqREAgObie6a1K2h7jh07Jp/Pd97j22SguRA5OTnKyspyntfV1enIkSPq0aOHXC7XBW0zGAwqLi5OX331lbxeb3OV2qYwx/aBObYPzLF9YI4/jjFGx44dU2xsbJPWa5OBpmfPngoLC1NFRUVIe0VFhfx+f6PreDweeTyekLaIiIhmqcfr9bbbf5T1mGP7wBzbB+bYPjDHC9eUMzP12uRt2263WyNGjNCGDRuctrq6Om3YsEHJycmtWBkAAGiL2uQZGknKysrS1KlTddVVV+maa67RM888oxMnTjh3PQEAANRrs4Hmjjvu0DfffKN58+YpEAjoyiuv1Lp16xpcKNySPB6PnnjiiQYfZbUnzLF9YI7tA3NsH5hj63CZpt4XBQAA0Ma0yWtoAAAAmoJAAwAArEegAQAA1iPQAAAA6xFozmLp0qXq06ePOnfurKSkJG3btq21S5L09594uPrqq9WtWzdFRUXp1ltvVWlpaciY0aNHy+VyhSz3339/yJiysjJlZGQoPDxcUVFRmjNnjmpra0PGbNq0ScOHD5fH49Fll12mFStWNKinJV6n+fPnN6h/wIABTv/JkyeVmZmpHj166JJLLtH48eMbfAljW56fJPXp06fBHF0ulzIzMyXZeQwLCgo0btw4xcbGyuVyafXq1SH9xhjNmzdPMTEx6tKli1JSUrRnz56QMUeOHNHkyZPl9XoVERGhadOm6fjx4yFjSkpKNHLkSHXu3FlxcXFatGhRg1reeOMNDRgwQJ07d1ZiYqLeeeedJtfS1DnW1NQoOztbiYmJ6tq1q2JjYzVlyhQdPHgwZBuNHfu8vDwr5ihJd999d4P6x44dGzLG5uMoqdH/my6XS4sXL3bGtPXjeD7vFW3pb+n51HJOBg289tprxu12m+XLl5tdu3aZ6dOnm4iICFNRUdHapZm0tDTz0ksvmZ07d5ri4mJz0003md69e5vjx487Y2644QYzffp0U15e7ixVVVVOf21trRk8eLBJSUkxn376qXnnnXdMz549TU5OjjPmr3/9qwkPDzdZWVlm9+7d5rnnnjNhYWFm3bp1zpiWep2eeOIJM2jQoJD6v/nmG6f//vvvN3FxcWbDhg1m+/bt5tprrzX/7//9P2vmZ4wxhw4dCplffn6+kWTee+89Y4ydx/Cdd94xv/nNb8ybb75pJJm33norpD8vL8/4fD6zevVq89lnn5mbb77ZJCQkmO+++84ZM3bsWDN06FDz0Ucfmffff99cdtllZuLEiU5/VVWViY6ONpMnTzY7d+40r776qunSpYv505/+5Iz58MMPTVhYmFm0aJHZvXu3mTt3runUqZPZsWNHk2pp6hwrKytNSkqKWbVqlfniiy9MYWGhueaaa8yIESNCthEfH28WLlwYcmzP/P/bludojDFTp041Y8eODan/yJEjIWNsPo7GmJC5lZeXm+XLlxuXy2X27dvnjGnrx/F83iva0t/Sc9VyPgg0jbjmmmtMZmam8/z06dMmNjbW5ObmtmJVjTt06JCRZDZv3uy03XDDDebXv/71Wdd55513TIcOHUwgEHDali1bZrxer6murjbGGPPoo4+aQYMGhax3xx13mLS0NOd5S71OTzzxhBk6dGijfZWVlaZTp07mjTfecNo+//xzI8kUFhZaMb/G/PrXvzb9+vUzdXV1xhj7j+H33yTq6uqM3+83ixcvdtoqKyuNx+Mxr776qjHGmN27dxtJ5uOPP3bG/OUvfzEul8v87//+rzHGmD/+8Y+me/fuzhyNMSY7O9v079/feX777bebjIyMkHqSkpLMfffdd961XMgcG7Nt2zYjyXz55ZdOW3x8vHn66afPuk5bn+PUqVPNLbfcctZ12uNxvOWWW8zPfvazkDabjqMxDd8r2tLf0vOp5XzwkdP3nDp1SkVFRUpJSXHaOnTooJSUFBUWFrZiZY2rqqqSJEVGRoa0r1y5Uj179tTgwYOVk5Ojb7/91ukrLCxUYmJiyJcUpqWlKRgMateuXc6YM1+D+jH1r0FLv0579uxRbGys+vbtq8mTJ6usrEySVFRUpJqampD9DhgwQL1793b2a8P8znTq1Cm9/PLLuueee0J+SNX2Y3im/fv3KxAIhOzL5/MpKSkp5LhFREToqquucsakpKSoQ4cO2rp1qzNm1KhRcrvdIXMqLS3V0aNHz2ve51NLc6mqqpLL5Wrwu3J5eXnq0aOHhg0bpsWLF4ecwrdhjps2bVJUVJT69++vmTNn6vDhwyH1t6fjWFFRobVr12ratGkN+mw6jt9/r2hLf0vPp5bz0Wa/Kbi1/O1vf9Pp06cbfCNxdHS0vvjii1aqqnF1dXV66KGHdN1112nw4MFO+6RJkxQfH6/Y2FiVlJQoOztbpaWlevPNNyVJgUCg0fnV9/3QmGAwqO+++05Hjx5tsdcpKSlJK1asUP/+/VVeXq4FCxZo5MiR2rlzpwKBgNxud4M3iOjo6HPW3lbm932rV69WZWWl7r77bqfN9mP4ffU1NbavM+uNiooK6e/YsaMiIyNDxiQkJDTYRn1f9+7dzzrvM7dxrlqaw8mTJ5Wdna2JEyeG/Hjfgw8+qOHDhysyMlJbtmxRTk6OysvLtWTJEivmOHbsWN12221KSEjQvn379Pjjjys9PV2FhYUKCwtrd8fxz3/+s7p166bbbrstpN2m49jYe0Vb+lt6PrWcDwKNxTIzM7Vz50598MEHIe0zZsxwHicmJiomJkZjxozRvn371K9fv390mU2Wnp7uPB4yZIiSkpIUHx+v119/XV26dGnFylrGiy++qPT0dMXGxjptth/Di11NTY1uv/12GWO0bNmykL6srCzn8ZAhQ+R2u3XfffcpNze3TX2N/NlMmDDBeZyYmKghQ4aoX79+2rRpk8aMGdOKlbWM5cuXa/LkyercuXNIu03H8WzvFe0NHzl9T8+ePRUWFtbg6uqKigr5/f5WqqqhWbNmac2aNXrvvfd06aWX/uDYpKQkSdLevXslSX6/v9H51ff90Biv16suXbr8Q1+niIgIXX755dq7d6/8fr9OnTqlysrKs+7Xpvl9+eWXWr9+ve69994fHGf7Mazf3g/ty+/369ChQyH9tbW1OnLkSLMc2zP7z1XLj1EfZr788kvl5+eHnJ1pTFJSkmpra3XgwIEfrP/M2lt7jmfq27evevbsGfJvsz0cR0l6//33VVpaes7/n1LbPY5ne69oS39Lz6eW80Gg+R63260RI0Zow4YNTltdXZ02bNig5OTkVqzs74wxmjVrlt566y1t3LixwSnNxhQXF0uSYmJiJEnJycnasWNHyB+d+j+8AwcOdMac+RrUj6l/Df6Rr9Px48e1b98+xcTEaMSIEerUqVPIfktLS1VWVubs16b5vfTSS4qKilJGRsYPjrP9GCYkJMjv94fsKxgMauvWrSHHrbKyUkVFRc6YjRs3qq6uzgl0ycnJKigoUE1NTcic+vfvr+7du5/XvM+nlgtVH2b27Nmj9evXq0ePHudcp7i4WB06dHA+pmnrc/y+r7/+WocPHw75t2n7caz34osvasSIERo6dOg5x7a143iu94q29Lf0fGo5L+d9+fBF5LXXXjMej8esWLHC7N6928yYMcNERESEXOndWmbOnGl8Pp/ZtGlTyO2C3377rTHGmL1795qFCxea7du3m/3795u3337b9O3b14waNcrZRv2teKmpqaa4uNisW7fO9OrVq9Fb8ebMmWM+//xzs3Tp0kZvxWuJ1+nhhx82mzZtMvv37zcffvihSUlJMT179jSHDh0yxvz99r7evXubjRs3mu3bt5vk5GSTnJxszfzqnT592vTu3dtkZ2eHtNt6DI8dO2Y+/fRT8+mnnxpJZsmSJebTTz917vDJy8szERER5u233zYlJSXmlltuafS27WHDhpmtW7eaDz74wPz0pz8Nud23srLSREdHm7vuusvs3LnTvPbaayY8PLzBrbAdO3Y0v/vd78znn39unnjiiUZvhT1XLU2d46lTp8zNN99sLr30UlNcXBzy/7P+jpAtW7aYp59+2hQXF5t9+/aZl19+2fTq1ctMmTLFijkeO3bMPPLII6awsNDs37/frF+/3gwfPtz89Kc/NSdPnmwXx7FeVVWVCQ8PN8uWLWuwvg3H8VzvFca0rb+l56rlfBBozuK5554zvXv3Nm6321xzzTXmo48+au2SjDF/v8WwseWll14yxhhTVlZmRo0aZSIjI43H4zGXXXaZmTNnTsh3mBhjzIEDB0x6errp0qWL6dmzp3n44YdNTU1NyJj33nvPXHnllcbtdpu+ffs6+zhTS7xOd9xxh4mJiTFut9v85Cc/MXfccYfZu3ev0//dd9+ZX/3qV6Z79+4mPDzc/PM//7MpLy+3Zn71/ud//sdIMqWlpSHtth7D9957r9F/m1OnTjXG/P0W1N/+9rcmOjraeDweM2bMmAZzP3z4sJk4caK55JJLjNfrNb/85S/NsWPHQsZ89tln5vrrrzcej8f85Cc/MXl5eQ1qef31183ll19u3G63GTRokFm7dm1I//nU0tQ57t+//6z/P+u/X6ioqMgkJSUZn89nOnfubK644grz1FNPhYSBtjzHb7/91qSmpppevXqZTp06mfj4eDN9+vQGAdjm41jvT3/6k+nSpYuprKxssL4Nx/Fc7xXGtK2/pedTy7m4/v+JAwAAWItraAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6xFoAACA9Qg0AADAegQaAABgPQINAACw3v8H80OO/Cf7gRoAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "camp['AvgIncome'] = camp['AvgIncome'].replace({0: np.NaN})\n",
    "plt.hist(camp['AvgIncome'], bins=20, range=(camp.AvgIncome.min(), camp.AvgIncome.max()))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.573551Z",
     "end_time": "2024-06-11T20:56:02.728583Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "count      7329.000000\nmean      53513.457361\nstd       19805.168339\nmin        2499.000000\n25%       40389.000000\n50%       48699.000000\n75%       62385.000000\nmax      200001.000000\nName: AvgIncome, dtype: float64"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['AvgIncome'].describe(include='all')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.728583Z",
     "end_time": "2024-06-11T20:56:02.770341Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "(array([ 751., 3026., 2343.,  991.,  605.,  421.,  301.,  290.,  154.,\n         131.,  114.,  110.,   69.,   49.,   48.,   28.,   29.,   27.,\n          31.,   65.]),\n array([  7500.,  37125.,  66750.,  96375., 126000., 155625., 185250.,\n        214875., 244500., 274125., 303750., 333375., 363000., 392625.,\n        422250., 451875., 481500., 511125., 540750., 570375., 600000.]),\n <BarContainer object of 20 artists>)"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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UVFRkbOurq5ORUVF8vv9rdgZAABoi9rkERpJys7O1rRp0zR69GhdeeWV+vWvf61jx47p7rvvbu3WAABAG9NmA81tt92mL7/8UgsXLlQgENBll12mgoKCc04Ubklut1sPPfTQOV9loWHMV3iYr/AwX+FhvsLDfIWnLc5XhAn3uigAAIA2pk2eQwMAABAOAg0AALAegQYAAFiPQAMAAKxHoDmPZ599Vv3791eXLl2UmpqqrVu3tnZLP9jGjRt14403KjExUREREXrjjTdCxo0xWrhwoRISEhQdHa20tDTt3bs3pObw4cOaMmWKPB6PYmNjNX36dB09ejSkZvv27brmmmvUpUsXJSUlacmSJef08tprr2nw4MHq0qWLhg8frrfffjvsXlpabm6urrjiCnXr1k1xcXG6+eabVVZWFlLzzTffKDMzUz179lTXrl01adKkc24IWVFRoYyMDMXExCguLk7z5s3TqVOnQmrWr1+vyy+/XG63WwMHDlReXt45/Xzfe7IxvbSkpUuXasSIEc6Ntvx+v955552w+usoc9WQxYsXKyIiQrNnz3bWMWf/b9GiRYqIiAhZBg8eHFZ/HWWu6v3xj3/UnXfeqZ49eyo6OlrDhw/Xtm3bnPF295lvcI6VK1cal8tlXnzxRbNr1y4zY8YMExsbayorK1u7tR/k7bffNr/4xS/M66+/biSZ1atXh4wvXrzYeL1e88Ybb5hPPvnE/OQnPzEDBgwwx48fd2omTJhgRo4caTZv3mx+//vfm4EDB5rbb7/dGa+pqTHx8fFmypQpZufOneaVV14x0dHR5t///d+dmk2bNpnIyEizZMkSs3v3bvPggw+azp07mx07doTVS0tLT083L730ktm5c6cpLS01119/venbt685evSoUzNz5kyTlJRkioqKzLZt28yYMWPMX/zFXzjjp06dMsOGDTNpaWnm448/Nm+//bbp1auXycnJcWo+//xzExMTY7Kzs83u3bvNM888YyIjI01BQYFT05j35Pf10tLefPNNk5+fb/7whz+YsrIy80//9E+mc+fOZufOnY3qryPN1dm2bt1q+vfvb0aMGGF+9rOfNbrPjjRnDz30kBk6dKg5dOiQs3z55ZeN7q8jzZUxxhw+fNj069fP/PSnPzVbtmwxn3/+uVm7dq3Zt2+fU9PePvMJNA248sorTWZmpvP49OnTJjEx0eTm5rZiV83r7EBTV1dnfD6feeyxx5x11dXVxu12m1deecUYY8zu3buNJPPRRx85Ne+8846JiIgwf/zjH40xxjz33HOme/fupra21qmZP3++GTRokPP47/7u70xGRkZIP6mpqebv//7vG91La6iqqjKSzIYNG5yeOnfubF577TWn5tNPPzWSTHFxsTHm2xDZqVMnEwgEnJqlS5caj8fjzNEDDzxghg4dGvJat912m0lPT3cef997sjG9tIbu3bubF154gbn6DkeOHDGXXHKJKSwsNH/5l3/pBBrmLNRDDz1kRo4c2eAYc3Wu+fPnm6uvvvq84+3xM5+vnM5y4sQJlZSUKC0tzVnXqVMnpaWlqbi4uBU7a1nl5eUKBAIh++31epWamursd3FxsWJjYzV69GinJi0tTZ06ddKWLVucmrFjx8rlcjk16enpKisr09dff+3UnPk69TX1r9OYXlpDTU2NJKlHjx6SpJKSEp08eTKkz8GDB6tv374hczZ8+PCQG0Kmp6crGAxq165dTs13zUdj3pON6eVCOn36tFauXKljx47J7/czV98hMzNTGRkZ5+wXc3auvXv3KjExURdffLGmTJmiioqKRvfX0ebqzTff1OjRo/W3f/u3iouL06hRo/Qf//Efznh7/Mwn0JzlT3/6k06fPn3OHYnj4+MVCARaqauWV79v37XfgUBAcXFxIeNRUVHq0aNHSE1D2zjzNc5Xc+b49/VyodXV1Wn27Nm66qqrNGzYMEnf9ulyuc75EdSz96Wp8xEMBnX8+PFGvScb08uFsGPHDnXt2lVut1szZ87U6tWrlZyczFydx8qVK/U///M/ys3NPWeMOQuVmpqqvLw8FRQUaOnSpSovL9c111yjI0eOMFcN+Pzzz7V06VJdcsklWrt2rWbNmqV//Md/1Msvv+z0Wd/X+fq07TO/zf70AdCWZGZmaufOnfrggw9au5U2bdCgQSotLVVNTY3++7//W9OmTdOGDRtau6026cCBA/rZz36mwsJCdenSpbXbafMmTpzo/HvEiBFKTU1Vv379tGrVKkVHR7diZ21TXV2dRo8erUcffVSSNGrUKO3cuVPLli3TtGnTWrm7lsERmrP06tVLkZGR55yRXllZKZ/P10pdtbz6ffuu/fb5fKqqqgoZP3XqlA4fPhxS09A2znyN89WcOf59vVxIWVlZWrNmjd5//3316dPHWe/z+XTixAlVV1eH1J+9L02dD4/Ho+jo6Ea9JxvTy4Xgcrk0cOBApaSkKDc3VyNHjtRTTz3FXDWgpKREVVVVuvzyyxUVFaWoqCht2LBBTz/9tKKiohQfH8+cfYfY2Fhdeuml2rdvH++vBiQkJCg5OTlk3ZAhQ5yv6drjZz6B5iwul0spKSkqKipy1tXV1amoqEh+v78VO2tZAwYMkM/nC9nvYDCoLVu2OPvt9/tVXV2tkpISp2bdunWqq6tTamqqU7Nx40adPHnSqSksLNSgQYPUvXt3p+bM16mvqX+dxvRyIRhjlJWVpdWrV2vdunUaMGBAyHhKSoo6d+4c0mdZWZkqKipC5mzHjh0hHwqFhYXyeDzOh833zUdj3pON6aU11NXVqba2lrlqwLhx47Rjxw6VlpY6y+jRozVlyhTn38zZ+R09elSfffaZEhISeH814KqrrjrnNhN/+MMf1K9fP0nt9DO/0acPdyArV640brfb5OXlmd27d5v77rvPxMbGhpwdb6MjR46Yjz/+2Hz88cdGknniiSfMxx9/bP73f//XGPPtZXOxsbHmd7/7ndm+fbu56aabGryEb9SoUWbLli3mgw8+MJdccknIJXzV1dUmPj7e3HXXXWbnzp1m5cqVJiYm5pxL+KKiosyvfvUr8+mnn5qHHnqowUv4vq+XljZr1izj9XrN+vXrQy4V/fOf/+zUzJw50/Tt29esW7fObNu2zfj9fuP3+53x+ktFx48fb0pLS01BQYHp3bt3g5eKzps3z3z66afm2WefbfBS0e97T35fLy1twYIFZsOGDaa8vNxs377dLFiwwERERJh33323Uf11pLk6nzOvcjKGOTvT3Llzzfr16015ebnZtGmTSUtLM7169TJVVVWN6q8jzZUx394KICoqyvzrv/6r2bt3r1m+fLmJiYkxv/3tb52a9vaZT6A5j2eeecb07dvXuFwuc+WVV5rNmze3dks/2Pvvv28knbNMmzbNGPPtpXP//M//bOLj443b7Tbjxo0zZWVlIdv46quvzO233266du1qPB6Pufvuu82RI0dCaj755BNz9dVXG7fbbX70ox+ZxYsXn9PLqlWrzKWXXmpcLpcZOnSoyc/PDxlvTC8traG5kmReeuklp+b48ePmH/7hH0z37t1NTEyM+Zu/+Rtz6NChkO3s37/fTJw40URHR5tevXqZuXPnmpMnT4bUvP/+++ayyy4zLpfLXHzxxSGvUe/73pON6aUl3XPPPaZfv37G5XKZ3r17m3HjxjlhprH9dZS5Op+zAw1z9v9uu+02k5CQYFwul/nRj35kbrvttpB7qjBX53rrrbfMsGHDjNvtNoMHDzbPP/98yHh7+8yPMMaYxh/PAQAAaHs4hwYAAFiPQAMAAKxHoAEAANYj0AAAAOsRaAAAgPUINAAAwHoEGgAAYD0CDQAAsB6BBgAAWI9AAwAArEegAQAA1iPQAAAA6/0f2YLQdXEzc5EAAAAASUVORK5CYII="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "camp['AvgHomeValue'] = camp['AvgHomeValue'].replace({0: np.NaN})\n",
    "plt.hist(camp['AvgHomeValue'], bins=20, range=(camp.AvgHomeValue.min(), camp.AvgHomeValue.max()))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.746349Z",
     "end_time": "2024-06-11T20:56:02.900098Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [
    {
     "data": {
      "text/plain": "count      9583.000000\nmean     112179.202755\nstd       98522.888583\nmin        7500.000000\n25%       53200.000000\n50%       77700.000000\n75%      129350.000000\nmax      600000.000000\nName: AvgHomeValue, dtype: float64"
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['AvgHomeValue'].describe(include='all')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.900098Z",
     "end_time": "2024-06-11T20:56:02.957801Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "data": {
      "text/plain": "0    False\n1    False\n2    False\n3    False\n4    False\nName: dup, dtype: bool"
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['dup'] = camp.duplicated()\n",
    "camp.dup.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.915510Z",
     "end_time": "2024-06-11T20:56:02.977209Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "data": {
      "text/plain": "    ID  Suc_flag  ARPU  PromCnt12  PromCnt36  PromCntMsg12  PromCntMsg36  \\\n0   12         1  50.0          6         10             2             3   \n1   53         0   NaN          5          9             1             4   \n2   67         1  25.0          6         11             2             4   \n3   71         1  80.0          7         10             2             4   \n4  142         1  15.0          6         11             2             4   \n\n   Class   Age Gender HomeOwner    AvgARPU  AvgHomeValue  AvgIncome    dup  \n0      4  57.0      M         H  49.894904       33400.0    39460.0  False  \n1      3  55.0      M         H  48.574742       37600.0    33545.0  False  \n2      1  57.0      F         H  49.272646      100400.0    42091.0  False  \n3      1  52.0      F         H  47.334953       39900.0    39313.0  False  \n4      1   NaN      F         U  47.827404       47500.0        NaN  False  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ID</th>\n      <th>Suc_flag</th>\n      <th>ARPU</th>\n      <th>PromCnt12</th>\n      <th>PromCnt36</th>\n      <th>PromCntMsg12</th>\n      <th>PromCntMsg36</th>\n      <th>Class</th>\n      <th>Age</th>\n      <th>Gender</th>\n      <th>HomeOwner</th>\n      <th>AvgARPU</th>\n      <th>AvgHomeValue</th>\n      <th>AvgIncome</th>\n      <th>dup</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>12</td>\n      <td>1</td>\n      <td>50.0</td>\n      <td>6</td>\n      <td>10</td>\n      <td>2</td>\n      <td>3</td>\n      <td>4</td>\n      <td>57.0</td>\n      <td>M</td>\n      <td>H</td>\n      <td>49.894904</td>\n      <td>33400.0</td>\n      <td>39460.0</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>53</td>\n      <td>0</td>\n      <td>NaN</td>\n      <td>5</td>\n      <td>9</td>\n      <td>1</td>\n      <td>4</td>\n      <td>3</td>\n      <td>55.0</td>\n      <td>M</td>\n      <td>H</td>\n      <td>48.574742</td>\n      <td>37600.0</td>\n      <td>33545.0</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>67</td>\n      <td>1</td>\n      <td>25.0</td>\n      <td>6</td>\n      <td>11</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>57.0</td>\n      <td>F</td>\n      <td>H</td>\n      <td>49.272646</td>\n      <td>100400.0</td>\n      <td>42091.0</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>71</td>\n      <td>1</td>\n      <td>80.0</td>\n      <td>7</td>\n      <td>10</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>52.0</td>\n      <td>F</td>\n      <td>H</td>\n      <td>47.334953</td>\n      <td>39900.0</td>\n      <td>39313.0</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>142</td>\n      <td>1</td>\n      <td>15.0</td>\n      <td>6</td>\n      <td>11</td>\n      <td>2</td>\n      <td>4</td>\n      <td>1</td>\n      <td>NaN</td>\n      <td>F</td>\n      <td>U</td>\n      <td>47.827404</td>\n      <td>47500.0</td>\n      <td>NaN</td>\n      <td>False</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp_dup = camp[camp['dup'] == True]  # 把有重复的数据保存出来，以备核查\n",
    "camp_nodup = camp[camp['dup'] == False]  # 注意与camp.drop_duplicates()的区别\n",
    "camp_nodup.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.946698Z",
     "end_time": "2024-06-11T20:56:02.980039Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [],
   "source": [
    "camp['dup1'] = camp['ID'].duplicated()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.961257Z",
     "end_time": "2024-06-11T20:56:02.981007Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [
    {
     "data": {
      "text/plain": "                  ID     Suc_flag         ARPU    PromCnt12    PromCnt36  \\\ncount    9686.000000  9686.000000  4843.000000  9686.000000  9686.000000   \nmean    97975.474086     0.500000    78.121722     3.495251     7.466963   \nstd     56550.171120     0.500026    62.225686     1.270258     1.977909   \nmin        12.000000     0.000000     5.000000     1.000000     1.000000   \n25%     48835.500000     0.000000    50.000000     3.000000     6.000000   \n50%     99106.000000     0.500000    65.000000     3.000000     8.000000   \n75%    148538.750000     1.000000   100.000000     4.000000     8.000000   \nmax    191779.000000     1.000000  1000.000000    15.000000    20.000000   \n\n       PromCntMsg12  PromCntMsg36        Class          Age      AvgARPU  \\\ncount   9686.000000   9686.000000  9686.000000  7279.000000  9686.000000   \nmean       1.034586      2.323044     2.424530    49.567386    52.905156   \nstd        0.244171      0.904083     1.049047     6.991306     4.993775   \nmin        0.000000      0.000000     1.000000    16.000000    46.138968   \n25%        1.000000      1.000000     2.000000    45.000000    49.760116   \n50%        1.000000      3.000000     2.000000    50.000000    50.876672   \n75%        1.000000      3.000000     3.000000    55.000000    54.452822   \nmax        4.000000      6.000000     4.000000    60.000000    99.444787   \n\n        AvgHomeValue      AvgIncome  \ncount    9583.000000    7329.000000  \nmean   112179.202755   53513.457361  \nstd     98522.888583   19805.168339  \nmin      7500.000000    2499.000000  \n25%     53200.000000   40389.000000  \n50%     77700.000000   48699.000000  \n75%    129350.000000   62385.000000  \nmax    600000.000000  200001.000000  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ID</th>\n      <th>Suc_flag</th>\n      <th>ARPU</th>\n      <th>PromCnt12</th>\n      <th>PromCnt36</th>\n      <th>PromCntMsg12</th>\n      <th>PromCntMsg36</th>\n      <th>Class</th>\n      <th>Age</th>\n      <th>AvgARPU</th>\n      <th>AvgHomeValue</th>\n      <th>AvgIncome</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>9686.000000</td>\n      <td>9686.000000</td>\n      <td>4843.000000</td>\n      <td>9686.000000</td>\n      <td>9686.000000</td>\n      <td>9686.000000</td>\n      <td>9686.000000</td>\n      <td>9686.000000</td>\n      <td>7279.000000</td>\n      <td>9686.000000</td>\n      <td>9583.000000</td>\n      <td>7329.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>97975.474086</td>\n      <td>0.500000</td>\n      <td>78.121722</td>\n      <td>3.495251</td>\n      <td>7.466963</td>\n      <td>1.034586</td>\n      <td>2.323044</td>\n      <td>2.424530</td>\n      <td>49.567386</td>\n      <td>52.905156</td>\n      <td>112179.202755</td>\n      <td>53513.457361</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>56550.171120</td>\n      <td>0.500026</td>\n      <td>62.225686</td>\n      <td>1.270258</td>\n      <td>1.977909</td>\n      <td>0.244171</td>\n      <td>0.904083</td>\n      <td>1.049047</td>\n      <td>6.991306</td>\n      <td>4.993775</td>\n      <td>98522.888583</td>\n      <td>19805.168339</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>12.000000</td>\n      <td>0.000000</td>\n      <td>5.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>0.000000</td>\n      <td>0.000000</td>\n      <td>1.000000</td>\n      <td>16.000000</td>\n      <td>46.138968</td>\n      <td>7500.000000</td>\n      <td>2499.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>48835.500000</td>\n      <td>0.000000</td>\n      <td>50.000000</td>\n      <td>3.000000</td>\n      <td>6.000000</td>\n      <td>1.000000</td>\n      <td>1.000000</td>\n      <td>2.000000</td>\n      <td>45.000000</td>\n      <td>49.760116</td>\n      <td>53200.000000</td>\n      <td>40389.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>99106.000000</td>\n      <td>0.500000</td>\n      <td>65.000000</td>\n      <td>3.000000</td>\n      <td>8.000000</td>\n      <td>1.000000</td>\n      <td>3.000000</td>\n      <td>2.000000</td>\n      <td>50.000000</td>\n      <td>50.876672</td>\n      <td>77700.000000</td>\n      <td>48699.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>148538.750000</td>\n      <td>1.000000</td>\n      <td>100.000000</td>\n      <td>4.000000</td>\n      <td>8.000000</td>\n      <td>1.000000</td>\n      <td>3.000000</td>\n      <td>3.000000</td>\n      <td>55.000000</td>\n      <td>54.452822</td>\n      <td>129350.000000</td>\n      <td>62385.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>191779.000000</td>\n      <td>1.000000</td>\n      <td>1000.000000</td>\n      <td>15.000000</td>\n      <td>20.000000</td>\n      <td>4.000000</td>\n      <td>6.000000</td>\n      <td>4.000000</td>\n      <td>60.000000</td>\n      <td>99.444787</td>\n      <td>600000.000000</td>\n      <td>200001.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp.describe()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:02.977981Z",
     "end_time": "2024-06-11T20:56:03.077005Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "outputs": [
    {
     "data": {
      "text/plain": "count    9686.000000\nmean       49.567386\nstd         6.060585\nmin        16.000000\n25%        47.000000\n50%        49.567386\n75%        54.000000\nmax        60.000000\nName: Age, dtype: float64"
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vmean = camp['Age'].mean(axis=0, skipna=True)\n",
    "camp['Age_empflag'] = camp['Age'].isnull()\n",
    "camp['Age'] = camp['Age'].fillna(vmean)\n",
    "camp['Age'].describe()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.027682Z",
     "end_time": "2024-06-11T20:56:03.084309Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "count      9686.000000\nmean     112179.202755\nstd       97997.592632\nmin        7500.000000\n25%       53500.000000\n50%       78450.000000\n75%      128175.000000\nmax      600000.000000\nName: AvgHomeValue, dtype: float64"
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vmean = camp['AvgHomeValue'].mean(axis=0, skipna=True)\n",
    "camp['AvgHomeValue_empflag'] = camp['AvgHomeValue'].isnull()\n",
    "camp['AvgHomeValue'] = camp['AvgHomeValue'].fillna(vmean)\n",
    "camp['AvgHomeValue'].describe()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.038898Z",
     "end_time": "2024-06-11T20:56:03.084309Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "data": {
      "text/plain": "count      9686.000000\nmean      53513.457361\nstd       17227.468161\nmin        2499.000000\n25%       42775.000000\n50%       53513.457361\n75%       56876.000000\nmax      200001.000000\nName: AvgIncome, dtype: float64"
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vmean = camp['AvgIncome'].mean(axis=0, skipna=True)\n",
    "camp['AvgIncome_empflag'] = camp['AvgIncome'].isnull()\n",
    "camp['AvgIncome'] = camp['AvgIncome'].fillna(vmean)\n",
    "camp['AvgIncome'].describe()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.056726Z",
     "end_time": "2024-06-11T20:56:03.084309Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "data": {
      "text/plain": "count    9686.000000\nmean       49.624685\nstd         5.835803\nmin        31.000000\n25%        47.000000\n50%        49.567386\n75%        54.000000\nmax        60.000000\nName: Age, dtype: float64"
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def blk(floor, root):  # 'blk' will return a function\n",
    "    def f(x):\n",
    "        if x < floor:\n",
    "            x = floor\n",
    "        elif x > root:\n",
    "            x = root\n",
    "        return x\n",
    "\n",
    "    return f\n",
    "\n",
    "\n",
    "q1 = camp['Age'].quantile(0.01)  # 计算百分位数\n",
    "q99 = camp['Age'].quantile(0.99)\n",
    "blk_tot = blk(floor=q1, root=q99)  # 'blk_tot' is a function\n",
    "camp['Age'] = camp['Age'].map(blk_tot)\n",
    "camp['Age'].describe()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.069321Z",
     "end_time": "2024-06-11T20:56:03.131650Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [
    {
     "data": {
      "text/plain": "0      (54.0, 60.0]\n1      (54.0, 60.0]\n2      (54.0, 60.0]\n3    (49.567, 54.0]\n4    (47.0, 49.567]\nName: Age_group1, dtype: category\nCategories (4, interval[float64, right]): [(30.999, 47.0] < (47.0, 49.567] < (49.567, 54.0] < (54.0, 60.0]]"
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['Age_group1'] = pd.qcut(camp['Age'], 4)  # 这里以age_oldest_tr字段等宽分为4段\n",
    "camp.Age_group1.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.099835Z",
     "end_time": "2024-06-11T20:56:03.134138Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "data": {
      "text/plain": "0    (52.75, 60.0]\n1    (52.75, 60.0]\n2    (52.75, 60.0]\n3    (45.5, 52.75]\n4    (45.5, 52.75]\nName: Age_group2, dtype: category\nCategories (4, interval[float64, right]): [(30.971, 38.25] < (38.25, 45.5] < (45.5, 52.75] < (52.75, 60.0]]"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "camp['Age_group2'] = pd.cut(camp['Age'], 4)  # 这里以age_oldest_tr字段等宽分为4段\n",
    "camp.Age_group2.head()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.115326Z",
     "end_time": "2024-06-11T20:56:03.172491Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [],
   "source": [
    "camp.to_csv(r'../data/tele_camp_ok.csv')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.131650Z",
     "end_time": "2024-06-11T20:56:03.247619Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2024-06-11T20:56:03.239645Z",
     "end_time": "2024-06-11T20:56:03.261217Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
